package java_thinking.unit_21._21_16;

import net.jcip.annotations.ThreadSafe;

/**
 * @Desc:   16-6 延长初始化占位类模式
 *              1 由于通过一个静态初始化来初始化 Resource，因此不需要额外的同步，当任何一个线程
 *                第一次调用getResource 时，都会使 ResourceHolder 被加载和被初始化，此时静态初
 *                初始化器将执行 Resource 的初始化操作；
 * @author: cww
 * @DateTime: 2019-06-30 22:04
 */
@ThreadSafe
public class ResourceFactory {

    /**
     * 使用专门的类初始化 Resource JVM 将推迟 ResourceHolder 的初始化操作，直到开始使用这个类时才初始化
     */
    private static class ResourceHolder {
        public static Resource resource = new Resource();
    }
    public static Resource getResource() {
        return ResourceHolder.resource;
    }
    static class Resource {
    }

}
